home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
C64
/
M-More Monthly Disks
/
(c)m1.d64
/
stars bas pr.z
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2007-02-04
|
9KB
|
296 lines
10 GOTO 50
20 SAVE"@0:STARS.BAS.PR",8
30 VERIFY"0:STARS.BAS.PR",8
40 END
50 PRINT CHR$(147)
60 REM CLEAR SCREEN
70 REM
80 REM STARS.BAS
90 REM BY JAMES A. INGRAM JAN.7, 1981
100 REM ADAPTED FROM CREATIVE COMPUTING, JUNE 1983 ISSUE.
110 REM
120 REM INSTRUCTIONS
130 PRINT CHR$(147)
140 REM CLEAR SCREEN
150 PRINT
160 PRINT
170 PRINT "***TABLE OF VISIBLE SKY OBJECTS***"
180 PRINT "THIS PROGRAM CHECKS THROUGH A MASTER"
190 PRINT"TABLE CONTAINING STARS AND OTHER"
200 PRINT"INTERESTING OBJECTS IN THE NIGHT SKY, AND"
210 PRINT"DETERMINES WHICH ONES ARE VISIBLE"
220 PRINT"AT A SPECIFIC TIME AND DATE. [201]T THEN"
230 PRINT"CALCULATES THE COMPASS BEARING"
240 PRINT"AND ALTITUDE ABOVE THE HORIZON FOR THAT"
250 PRINT"TIME. THE TABLE INCLUDES THE NAME,"
260 PRINT"MAGNITUDE, RIGHT ASCENSION, DECLINATION,"
270 PRINT"BEARING, AND ALTITUDE. NOTE THAT TIME"
280 PRINT"MUST BE ENTERED IN 24 HOUR FORMAT (2 PM=14:00)"
290 PRINT"AND THAT NUMBERS LESS THAN 10 MUST BE ENTERED"
300 PRINT"AS 2 DIGITS WITH A LEADING ZERO (05)."
310 PRINT"BEARINGS: 0 IS NORTH, EAST IS 90"
320 PRINT" 180 IS SOUTH, 270 IS WEST"
330 PRINT"CHANGE LINES 360 TO 460 FOR YOUR OWN LONGITUDE, LATITUDE, AND ZONE."
340 PRINT
350 REM
360 REM INITIALIZE CONSTANTS
370 LNG=360-79.25
380 REM SCARBOROUGH, ONTARIO, CANADA
390 LAT=43.75
400 REM SOUTH END OF BOROUGH
410 GX=19
420 REM EASTERN STANDARD TIME
430 N=91
440 REM NUMBER OF SKY OBJECTS AVAILABLE
450 REM
460 REM INPUT LOCAL VALUES IN THE FIVE LINES ABOVE
470 INPUT"DATE (AS MM/DD)";D$
480 INPUT"TIME (24 H CLOCK AS HH/MM)";T$
490 INPUT"STANDARD TIME (S) OR DAYLIGHT (D)";F$
500 PRINT"MAXIMUM MAGNITUDE (MIN. BRIGHTNESS) FOR TABLE":INPUTMG
510 REM
520 REM CALCULATE BASIC VALUES
530 REM DECIPHER TIME
540 TH=VAL(LEFT$(T$,2))
550 REM ZONE HOURS
560 TM=VAL(RIGHT$(T$,2))
570 REM ZONE MINUTES
580 TZ=TH+TM/60
590 REM DECIMAL ZONE TIME
600 IF F$="D" THEN GX=GX+1 :REM CORRECT FOR DAYLIGHT SAVING TIME
610 GT=TZ-GX
620 REM UNCORRECTED DECIMAL GMT
630 IF GT<0 THEN GT=GT+24
640 IF GT<24 THEN 670
650 GT=GT-24
660 GOTO 640
670 TL=GT+(LNG/360)*24
680 REM UNCORRECTED LOCAL STAR TIME
690 IF TL<24 THEN 720
700 TL=TL-24
710 GOTO 690
720 TL$=STR$(INT(TL))+":"+STR$(INT((TL-INT(TL))*60))
730 REM STAR TIME STRING
740 GT$=STR$(INT(GT))+":"+STR$(INT((GT-INT(GT))*60))
750 REM GMT STRING
760 REM
770 REM CALCULATE DAYS FROM SEPTEMBER 22
780 M=VAL(LEFT$(D$,2))
790 REM MONTH
800 DY=VAL(RIGHT$(D$,2))
810 REM DAY
820 IF DY=22 AND M=9 THEN CD=0: GOTO 1020
830 IF DY>22 AND M=9 THEN CD=DY-22 :GOTO 1020
840 IF M=10 THEN CD=8+DY :GOTO 1020
850 IF M<9 OR (M=9 AND DY<22) THEN M=M+12 :GOTO 890
860 IF M>10 THEN 890
870 PRINT"IMPROPER DATE - RE-ENTER"
880 GOTO 470
890 R=M-10
900 CD=8
910 DIM D3(12)
920 FOR PS=1 TO 12
930 READ D3(PS)
940 NEXT PS
950 FOR X=1 TO R
960 REM ADD UP MONTHS
970 CD=CD+D3(X)
980 NEXT X
990 DATA 31,30,31,31,28,31,30,31,30,31,31,30
1000 CD=CD+DY
1010 REM ADD IN DAYS IN CURRENT MONTH
1020 ZLH=CD*24/365+TL
1030 IF ZLH>24 THEN ZLH=ZLH-24
1040 ZLH$=STR$(INT(ZLH))+":"+STR$(INT((ZLH-INT(ZLH))*60))
1050 REM
1060 REM PRINT TABLE HEADING
1070 INPUT"PRINTER (Y/N)";IN$ :REM PRINTER ON
1080 PN=3 :IF IN$="Y" THEN PN=4
1090 OPENPN,PN
1100 PRINT#PN," CELESTIAL OBJECT AVAILABILITY TABLE"
1110 PRINT#PN
1120 PRINT#PN
1130 PRINT#PN,"DATE ";D$;SPC(30);"DAYS FROM SEPT. 22 =";CD
1140 PRINT#PN,"LOCAL ZONE TIME ";T$;" (GMT = ";GT$;")";
1150 PRINT#PN, SPC(5);"LOCAL STAR TIME ";TL$
1160 PRINT#PN,"LATITUDE ";LAT;"DEGREES NORTH";
1170 PRINT#PN, SPC(12);"LONGITUDE ";LNG;"DEGREES EAST"
1180 PRINT#PN,"OBJECTS BRIGHTER THAN MAGNITUDE";MG;
1190 PRINT#PN, SPC(5);"ZENITH AT ";ZLH$;" HOURS RA"
1200 PRINT#PN
1210 PRINT#PN
1220 PRINT#PN,"OBJECT MAG";SPC(3);"R.A.";
1230 PRINT#PN,SPC(5);"DEC.";SPC(3);"BEARING";SPC(3);"ALTITUDE"
1240 PRINT#PN,"---------------------------------------";
1250 PRINT#PN,"-------------------------------"
1260 REM
1270 REM MAIN CALCULATION LOOP
1280 LAT=LAT*6.28318/360
1290 LAT=3.14159/2-LAT
1300 FOR J=1 TO N
1310 REM READ DATA TABLE
1320 READ N$,BR,RA$,D
1330 IF BR>MG THEN 174 0:REM BELOW BRIGHTNESS LIMIT?
1340 N$=LEFT$(N$+" ",20)
1350 RA=VAL(LEFT$(RA$,2))+VAL(RIGHT$(RA$,2))/60
1360 ZRA=(RA-ZLH)*15
1370 REM POSITION FROM ZENITH LINE IN DEGREES
1380 IF ZRA>360 THEN ZRA=ZRA-360
1390 IF ZRA<0 THEN ZRA=ZRA+360
1400 ALT=90-D
1410 ZPI=ZRA*6.28318/360
1420 API=ALT*6.28318/360
1430 X=SIN(API)*COS(ZPI)
1440 REM CONVERT TO XYZ COORDINATES
1450 Y=SIN(API)*SIN(ZPI)
1460 Z=COS(API)
1470 X1=X*COS(LAT)-Z*SIN(LAT)
1480 REM ROTATE TO ZENITH
1490 Z1=X*SIN(LAT)+Z*COS(LAT)
1500 X=X1
1510 Z=Z1
1520 REM NOTE: ATN() FUNCTIONS BELOW ARE VALID FROM -PI/2 TO PI/2 ONLY.
1530 REM ALTITUDE IS WITHIN THIS RANGE, BUT BEARING MUST BE TRANSLATED
1540 REM TO COMPASS HEADING WITHIN EACH QUADRANT OF THE X-Y PLANE.
1550 A=ATN(Z/(SQR(X*X+Y*Y)))*(360/6.283)
1560 REM ALTITUDE ABOVE HORIZON
1570 IF A<0 THEN 173 0:REM BELOW HORIZON?
1580 B=ATN(Y/X)*(360/6.283)
1590 REM COMPASS BEARING
1600 IF X>0 AND Y>0 THEN B=180-B :GOTO 164 0:REM SE QUADRANT
1610 IF X>0 AND Y<0 THEN B=180-B :GOTO 164 0: REM SW QUADRANT
1620 IF X<0 AND Y>0 THEN B=-B : GOTO 164 0: REM NE QUADRANT
1630 IF X<0 AND Y<0 THEN B=360-B :GOTO 164 0:REM NW QUADRANT
1640 REM PRINT DATA
1650 BR$=STR$(BR) :BR$=LEFT$(BR$+" ",4)
1660 D$=STR$(D) :D$=LEFT$(D$+" ",5)
1690 PRINT#PN, N$;SPC(3);BR$;SPC(3);RA$;SPC(3);D$;
1692 V1=3 :V2=2
1695 V=B :GOSUB 50000
1700 PRINT#PN, SPC(3);V$;
1705 V=A :GOSUB 50000
1710 PRINT#PN, SPC(6);V$
1720 REM END OF PRINT ROUTINE
1730 REM END OF BEARING CALCULATION AND PRINT
1740 REM END OF VISIBLE STARS ONLY ROUTINE
1750 NEXT J
1760 REM GET NEXT STAR
1770 CLOSE PN
1780 REM PRINTER OFF
1790 END
1800 REM
1810 REM
1820 REM FOR Q=1 TO 500 :NEXT Q
1830 RETURN
1840 REM FOR Q=1 TO 100 :NEXT Q
1850 RETURN
1860 REM
1870 REM DATA TABLES
1880 DATA SIRIUS (A-CANIS MAJ) , -1.6, 06.43, -16.7
1890 DATA CANOPUS (A-CARINA), -.7,06.23,-52.7
1900 DATA ARCTURUS (A-BOOTES), -.1,14.14,19.4
1910 DATA VEGA (A-LYRA) , 0,18.36,38.8
1920 DATA CAPELLA (A-AURIGA),.1,05.14,46.1
1930 DATA RIGEL (B-ORION),.2,05.13,-8.3
1940 DATA PROCYON (A-CANIS MIN),.4,07.37,5.4
1950 DATA BETELGEUSE (A-ORION),.4,05.54,7.4
1960 DATA ALTAIR (A-AQUILA),.8,19.49,8.8
1970 DATA ALDEBARAN (A-TAURUS),.9,04.34,16.5
1980 DATA ANTARES (A-SCORPIO),1,16.28,-26.3
1990 DATA SPICA (A-VIRGO), 1,13.24,-11
2000 DATA FOMALHAUT (A-PISCIS AUST),1.2,22.56,-29.7
2010 DATA POLLUX (B-GEMINI),1.2,07.43,28.1
2020 DATA DENEB (A-CYGNUS),1.3,20.40,45.2
2030 DATA REGULUS (A-LEO),1.4,10.70,12.1
2040 DATA CASTOR (A-GEMINI),1.6,07.33,32
2050 DATA ADHARA (E-CANIS MAJ),1.6,06.57,-28.9
2060 DATA BELLATRIX (G-ORION),1.6,05.24,6.1
2070 DATA SHAULA (L-SCORPIO),1.6,17.32,-37.1
2080 DATA ELNATH (B-TAURUS),1.7,05.24,28.6
2090 DATA ALNILAM (E-ORION),1.7,05.35,-1.2
2100 DATA MIRFAK (A-PERSEUS),1.8,03.22,49.8
2110 DATA DUBHE (A-URSA MAJ),1.8,11.20,61.9
2120 DATA ALIOTH (E-URSA MAJ),1.8,12.53,56.1
2130 DATA GAMMA VELORUS,1.8,08.90,-47.3
2140 DATA KAUS AUSTRALIS (E-SAGTRS),1.8,18.22,-34.4
2150 DATA ALNITAK (Z-ORION),1.8,05.39,-2
2160 DATA AL NAIR (A-CRUS),1.8,22.60,-47.1
2170 DATA ALKAID (N-URSA MAJ),1.9,13.46,49.5
2180 DATA ALHENA (G-GEMINI),1.9,06.36,16.4
2190 DATA WEZEN (D-CANIS MAJ),1.9,07.70,-26.4
2200 DATA THETA SCORPII,1.9,17.35,-43
2210 DATA MENKALINAN (B-AURIGA),1.9,05.57,45
2220 DATA MIRZAM (B-CANIS MAJ),2,06.21,-17.9
2230 DATA DELTA VELORUM,2,08.44,-51.6
2240 DATA POLARIS (A-URSA MIN),2,02.30,89.1
2250 DATA ALPHARD (A-HYDRA),2,09.26,-8.5
2260 DATA HAMAL (A-ARIES),2,02.50,23.3
2270 DATA DIPHDA (B-CETUS),2,00.42,-18.2
2280 DATA MENKENT (TH-CENTAURI),2,14.50,-36.2
2290 DATA MIRACH (B-ANDROMEDA),2,01.88,35.5
2300 DATA NUNKI (S-SAGGTRS),2.1,18.53,-26.3
2310 DATA RASALHAQUE (A-OPHIUC),2.1,17.34,12.6
2320 DATA ALPHERATZ (A-ANDROM),2.1,00.70,28.9
2330 DATA ALGOL (B-PERSEUS),2.1,03.60,40.8
2340 DATA KOCHAB (B-URSA MIN),2.1,14.51,74.3
2350 DATA ALMACH (G-ANDROM),2.1,02.20,42.2
2360 DATA SAIPH (K-ORION),2.1,05.54,7.1
2370 DATA SCHEDAR (A-CASSIIOPEIA),2.1,00.39,56.4
2380 DATA PSI-PISCES (DBL 300,5.5,01.40,21.2
2390 DATA G-ANDROM. (OR-BL 10),2,02.20,42.2
2400 DATA B-ORION (RIGEL 9),0,05.13,-8.2
2410 DATA TH-ORION (TRAPEZ),5.5,05.34,-5.5
2420 DATA S-ORION (TRI. 11-41),4,05.37,-2.6
2430 DATA A-CANIS MAJ (SIRIUS 10),-1.5,06.44,-16.7
2440 DATA A-GEMINI (CASTOR 75),2,07.32,32
2450 DATA T-CANCER (OR-BL 31),4,08.45,29
2460 DATA G-LEO (DBL 4.5),2.5,10.18,20.2
2470 DATA Z-URSA MAJ (MIZAR 14),2.5,13.23,55.2
2480 DATA E-BOOTES (GD-BL 3),2.5,14.41,27.3
2490 DATA Z-CORONA (DBL 6),5,15.39,36.8
2500 DATA NU-DRACO (DBL 62),5,17.32,55.2
2510 DATA E-LYRA (DBL-DBL 2.7),5,18.44,39.7
2520 DATA B-CYGNI (ALBIREO 34),3,19.30,27.8
2530 DATA G-DELPHIN (YL-GR 10),4.5,20.45,16
2540 DATA NGC869 (PERSEUS GL W),4.5,02.17,57
2550 DATA NGC884 (PERSEUS CL E),4.5,02.21,57
2560 DATA NGC1528 (60 ST 25'),6.5,04.14,51.2
2570 DATA NGC 2632 (M11 BEEHIVE),4,08.39,20.1
2580 DATA NGC6523 (M8 LACOON),5,18.20,-24.4
2590 DATA NGC6618 (M17 OMEGA),7,18.19,-16.2
2600 DATA NGC6720 (M57 RING),9,18.53,33
2610 DATA NGC6853 (M27 DUMBL),7.5,19.59,22.6
2620 DATA NGC5139 (OMEGA GLOB),4,13.25,-47.4
2630 DATA NGC6205 (M13 HERC),5.5,16.41,36.5
2640 DATA NGC6656 (M22 SAGTR),6,18.35,-23.9
2650 DATA NGC1952 (M1 CRAB),8.5,05.33,22
2660 DATA ORION NEB (M12),4,05.33,-5
2670 DATA ANDROM GALAXY (M31),4.8,00.40,41
2680 DATA CANES CLUSTER (M3),6.3,13.40,29
2690 DATA WHIRLPOOL GALAXY (M51),8.1,13.28,47
2700 DATA CYGNUS CLUST (M39),5.2,21.30,48
2710 DATA OPHIUC CLUST (M10),6.7,16.55,-4
2720 DATA OHPIUC CLUSTER (M12), 6.6,16.45,-2
2730 DATA OPHIUC CLUSTER (M14),5.7,17.35,-3
2740 DATA PERSEUS SNGL CLSTR (M34),5.5,02.39,43
2750 DATA AQUARIUS CLSTR (M2),6.3,21.31,-1
2760 DATA GEMINI CLUSTER (M35),5.3,06.60,24
2770 DATA CANIS MAJ OC (M41),4.6,06.45,-21
2780 DATA MONOCEROS OC (M50),6.3,07.10,-8
50000 REM 'PRINT USING', THAT IS, ARRANGE IN COLUMNS. FOR PET/CBM.
50001 REM V1 IS NUMBER OF DIGITS BEFORE THE DECIMAL PLACE,
50002 REM V2 IS THE NUMBER OF DECIMAL PLACES, AND
50003 REM V IS THE NUMBER THAT IS REARRANGED INTO V$ IN THE FORMAT 'V1.V2'.
50004 REM THE CALLING ROUTINE SHOULD SET V1,V2, AND V, THEN GOSUB 50000.
50005 REM ON RETURN, V$ CAN BE PRINTED.
50006 REM V$'S LENGTH WILL BE V1+V2+2, THE EXTRA TWO BYTES BEING FOR
50007 REM THE SIGN AND THE DECIMAL PLACE. IF V2=0, THE LENGTH IS V1+1.
50020 V4=INT(V*10^V2+.5)
50030 V$=RIGHT$(" "+STR$(V4),V1+V2+1):Q$=V$
50040 IF V2<1 GOTO50080
50050 FORV5=V1+2TOV1+V2+1:IF ASC(MID$(V$,V5))<48THENNEXTV5
50060 V6=V5-V1-1
50070 V$=MID$(V$,V6,V1+1)+LEFT$(".00000",V6)+MID$(V$,V5)
50080 IF ASC(V$)>47 THEN V$=LEFT$("**********",V1+V2+2+(V2=0))
50090 RETURN